/**
 * 给你一个字符串 s ，请你将该字符串划分成一个或多个 子字符串 ，并满足每个子字符串中的字符都是 唯一 的。也就是说，在单个子字符串中，字母的出现次数都不超过 一次 。
 *
 * 满足题目要求的情况下，返回 最少 需要划分多少个子字符串。
 *
 * 注意，划分后，原字符串中的每个字符都应该恰好属于一个子字符串。
 *
 *
 *
 * 链接：https://leetcode.cn/problems/optimal-partition-of-string
 */
class PartitionString {
    public int partitionString(String s) {
    char[] cs=s.toCharArray();
        int ans=0;
        int r=0;
        boolean[] hash=new boolean[128];
        int len=s.length();
        while(r<len) {
            while(r<len&&!hash[cs[r]]) {
                hash[cs[r]]=true;
                r++;
            }
            ans+=1;
            hash=new boolean[128];
        }
        return ans;
    }
}